# read MARC mnemonics
# result is in MARC8 and still needs to be converted to Unicode

import re

re_brace = re.compile(b'(\\{.+?\\})')

mapping = {
    b'{00}': b'\x00',
    b'{01}': b'\x01',
    b'{02}': b'\x02',
    b'{03}': b'\x03',
    b'{04}': b'\x04',
    b'{05}': b'\x05',
    b'{06}': b'\x06',
    b'{07}': b'\x07',
    b'{08}': b'\x08',
    b'{09}': b'\t',
    b'{0A}': b'\n',
    b'{0B}': b'\x0b',
    b'{0C}': b'\x0c',
    b'{0D}': b'\r',
    b'{0E}': b'\x0e',
    b'{0F}': b'\x0f',
    b'{0}': b'0',
    b'{10}': b'\x10',
    b'{11}': b'\x11',
    b'{12}': b'\x12',
    b'{13}': b'\x13',
    b'{14}': b'\x14',
    b'{15}': b'\x15',
    b'{16}': b'\x16',
    b'{17}': b'\x17',
    b'{18}': b'\x18',
    b'{19}': b'\x19',
    b'{1A}': b'\x1a',
    b'{1B}': b'\x1b',
    b'{1C}': b'\x1c',
    b'{1D}': b'\x1d',
    b'{1E}': b'\x1e',
    b'{1F}': b'\x1f',
    b'{1}': b'1',
    b'{20}': b' ',
    b'{21}': b'!',
    b'{22}': b'"',
    b'{23}': b'#',
    b'{24}': b'$',
    b'{25}': b'%',
    b'{26}': b'&',
    b'{27}': "'",
    b'{28}': b'(',
    b'{29}': b')',
    b'{2A}': b'*',
    b'{2B}': b'+',
    b'{2C}': b',',
    b'{2D}': b'-',
    b'{2E}': b'.',
    b'{2F}': b'/',
    b'{2}': b'2',
    b'{30}': b'0',
    b'{31}': b'1',
    b'{32}': b'2',
    b'{33}': b'3',
    b'{34}': b'4',
    b'{35}': b'5',
    b'{36}': b'6',
    b'{37}': b'7',
    b'{38}': b'8',
    b'{39}': b'9',
    b'{3A}': b':',
    b'{3B}': b';',
    b'{3C}': b'<',
    b'{3D}': b'=',
    b'{3E}': b'>',
    b'{3F}': b'?',
    b'{3}': b'3',
    b'{40}': b'@',
    b'{41}': b'A',
    b'{42}': b'B',
    b'{43}': b'C',
    b'{44}': b'D',
    b'{45}': b'E',
    b'{46}': b'F',
    b'{47}': b'G',
    b'{48}': b'H',
    b'{49}': b'I',
    b'{4A}': b'J',
    b'{4B}': b'K',
    b'{4C}': b'L',
    b'{4D}': b'M',
    b'{4E}': b'N',
    b'{4F}': b'O',
    b'{4}': b'4',
    b'{50}': b'P',
    b'{51}': b'Q',
    b'{52}': b'R',
    b'{53}': b'S',
    b'{54}': b'T',
    b'{55}': b'U',
    b'{56}': b'V',
    b'{57}': b'W',
    b'{58}': b'X',
    b'{59}': b'Y',
    b'{5A}': b'Z',
    b'{5B}': b'[',
    b'{5C}': b'\\',
    b'{5D}': b']',
    b'{5E}': b'^',
    b'{5F}': b'_',
    b'{5}': b'5',
    b'{60}': b'`',
    b'{61}': b'a',
    b'{62}': b'b',
    b'{63}': b'c',
    b'{64}': b'd',
    b'{65}': b'e',
    b'{66}': b'f',
    b'{67}': b'g',
    b'{68}': b'h',
    b'{69}': b'i',
    b'{6A}': b'j',
    b'{6B}': b'k',
    b'{6C}': b'l',
    b'{6D}': b'm',
    b'{6E}': b'n',
    b'{6F}': b'o',
    b'{6}': b'6',
    b'{70}': b'p',
    b'{71}': b'q',
    b'{72}': b'r',
    b'{73}': b's',
    b'{74}': b't',
    b'{75}': b'u',
    b'{76}': b'v',
    b'{77}': b'w',
    b'{78}': b'x',
    b'{79}': b'y',
    b'{7A}': b'z',
    b'{7B}': b'{',
    b'{7C}': b'|',
    b'{7D}': b'}',
    b'{7E}': b'~',
    b'{7F}': b'\x7f',
    b'{7}': b'7',
    b'{80}': b'\x80',
    b'{81}': b'\x81',
    b'{82}': b'\x82',
    b'{83}': b'\x83',
    b'{84}': b'\x84',
    b'{85}': b'\x85',
    b'{86}': b'\x86',
    b'{87}': b'\x87',
    b'{88}': b'\x88',
    b'{89}': b'\x89',
    b'{8A}': b'\x8a',
    b'{8B}': b'\x8b',
    b'{8C}': b'\x8c',
    b'{8D}': b'\x8d',
    b'{8E}': b'\x8e',
    b'{8F}': b'\x8f',
    b'{8}': b'8',
    b'{90}': b'\x90',
    b'{91}': b'\x91',
    b'{92}': b'\x92',
    b'{93}': b'\x93',
    b'{94}': b'\x94',
    b'{95}': b'\x95',
    b'{96}': b'\x96',
    b'{97}': b'\x97',
    b'{98}': b'\x98',
    b'{99}': b'\x99',
    b'{9A}': b'\x9a',
    b'{9B}': b'\x9b',
    b'{9C}': b'\x9c',
    b'{9D}': b'\x9d',
    b'{9E}': b'\x9e',
    b'{9F}': b'\x9f',
    b'{9}': b'9',
    b'{A0}': b'\xa0',
    b'{A1}': b'\xa1',
    b'{A2}': b'\xa2',
    b'{A3}': b'\xa3',
    b'{A4}': b'\xa4',
    b'{A5}': b'\xa5',
    b'{A6}': b'\xa6',
    b'{A7}': b'\xa7',
    b'{A8}': b'\xa8',
    b'{A9}': b'\xa9',
    b'{AA}': b'\xaa',
    b'{AB}': b'\xab',
    b'{AC}': b'\xac',
    b'{AD}': b'\xad',
    b'{AElig}': b'\xa5',
    b'{AE}': b'\xae',
    b'{AF}': b'\xaf',
    b'{Aacute}': b'\xe2A',
    b'{Abreve}': b'\xe6A',
    b'{Acirc}': b'\xe3A',
    b'{Acy}': b'A',
    b'{Agrave}': b'\xe1A',
    b'{Aogon}': b'\xf1A',
    b'{Aring}': b'\xeaA',
    b'{Atilde}': b'\xe4A',
    b'{Auml}': b'\xe8A',
    b'{A}': b'A',
    b'{B0}': b'\xb0',
    b'{B1}': b'\xb1',
    b'{B2}': b'\xb2',
    b'{B3}': b'\xb3',
    b'{B4}': b'\xb4',
    b'{B5}': b'\xb5',
    b'{B6}': b'\xb6',
    b'{B7}': b'\xb7',
    b'{B8}': b'\xb8',
    b'{B9}': b'\xb9',
    b'{BA}': b'\xba',
    b'{BB}': b'\xbb',
    b'{BC}': b'\xbc',
    b'{BD}': b'\xbd',
    b'{BE}': b'\xbe',
    b'{BF}': b'\xbf',
    b'{Bcy}': b'B',
    b'{B}': b'B',
    b'{C0}': b'\xc0',
    b'{C1}': b'\xc1',
    b'{C2}': b'\xc2',
    b'{C3}': b'\xc3',
    b'{C4}': b'\xc4',
    b'{C5}': b'\xc5',
    b'{C6}': b'\xc6',
    b'{C7}': b'\xc7',
    b'{C8}': b'\xc8',
    b'{C9}': b'\xc9',
    b'{CA}': b'\xca',
    b'{CB}': b'\xcb',
    b'{CC}': b'\xcc',
    b'{CD}': b'\xcd',
    b'{CE}': b'\xce',
    b'{CF}': b'\xcf',
    b'{CHcy}': b'Ch',
    b'{Cacute}': b'\xe2C',
    b'{Ccaron}': b'\xe9C',
    b'{Ccedil}': b'\xf0C',
    b'{C}': b'C',
    b'{D0}': b'\xd0',
    b'{D1}': b'\xd1',
    b'{D2}': b'\xd2',
    b'{D3}': b'\xd3',
    b'{D4}': b'\xd4',
    b'{D5}': b'\xd5',
    b'{D6}': b'\xd6',
    b'{D7}': b'\xd7',
    b'{D8}': b'\xd8',
    b'{D9}': b'\xd9',
    b'{DA}': b'\xda',
    b'{DB}': b'\xdb',
    b'{DC}': b'\xdc',
    b'{DD}': b'\xdd',
    b'{DE}': b'\xde',
    b'{DF}': b'\xdf',
    b'{DJEcy}': b'\xa3',
    b'{DZEcy}': b'Dz',
    b'{DZHEcy}': b'D\xe9z',
    b'{Dagger}': b'|',
    b'{Dcaron}': b'\xe9D',
    b'{Dcy}': b'D',
    b'{Dstrok}': b'\xa3',
    b'{D}': b'D',
    b'{E0}': b'\xe0',
    b'{E1}': b'\xe1',
    b'{E2}': b'\xe2',
    b'{E3}': b'\xe3',
    b'{E4}': b'\xe4',
    b'{E5}': b'\xe5',
    b'{E6}': b'\xe6',
    b'{E7}': b'\xe7',
    b'{E8}': b'\xe8',
    b'{E9}': b'\xe9',
    b'{EA}': b'\xea',
    b'{EB}': b'\xeb',
    b'{EC}': b'\xec',
    b'{ED}': b'\xed',
    b'{EE}': b'\xee',
    b'{EF}': b'\xef',
    b'{ETH}': b'\xa3',
    b'{Eacute}': b'\xe2E',
    b'{Ecaron}': b'\xe9E',
    b'{Ecirc}': b'\xe3E',
    b'{Ecy}': b'\xe7E',
    b'{Egrave}': b'\xe1E',
    b'{Ehookr}': b'\xf1E',
    b'{Eogon}': b'\xf1E',
    b'{Euml}': b'\xe8E',
    b'{E}': b'E',
    b'{F0}': b'\xf0',
    b'{F1}': b'\xf1',
    b'{F2}': b'\xf2',
    b'{F3}': b'\xf3',
    b'{F4}': b'\xf4',
    b'{F5}': b'\xf5',
    b'{F6}': b'\xf6',
    b'{F7}': b'\xf7',
    b'{F8}': b'\xf8',
    b'{F9}': b'\xf9',
    b'{FA}': b'\xfa',
    b'{FB}': b'\xfb',
    b'{FC}': b'\xfc',
    b'{FD}': b'\xfd',
    b'{FE}': b'\xfe',
    b'{FF}': b'\xff',
    b'{Fcy}': b'F',
    b'{F}': b'F',
    b'{GEcy}': b'G',
    b'{GHcy}': b'G',
    b'{GJEcy}': b'\xe2G',
    b'{Gcy}': b'G',
    b'{G}': b'G',
    b'{HARDcy}': b'\xb7',
    b'{Hcy}': b'H',
    b'{H}': b'H',
    b'{IEcy}': b'\xebI\xecE',
    b'{IJlig}': b'IJ',
    b'{IOcy}': b'\xebI\xecO',
    b'{IYcy}': b'Y',
    b'{Iacute}': b'\xe2I',
    b'{Icaron}': b'\xe9I',
    b'{Icirc}': b'\xe3I',
    b'{Icy}': b'I',
    b'{Idot}': b'\xe7I',
    b'{Igrave}': b'\xe1I',
    b'{Iumlcy}': b'\xe8I',
    b'{Iuml}': b'\xe8I',
    b'{I}': b'I',
    b'{JEcy}': b'J',
    b'{JIcy}': b'\xe8I',
    b'{Jcy}': b'\xe6I',
    b'{J}': b'J',
    b'{KHcy}': b'Kh',
    b'{KJEcy}': b'\xe2K',
    b'{Kcy}': b'K',
    b'{K}': b'K',
    b'{LJEcy}': b'Lj',
    b'{Lacute}': b'\xe2L',
    b'{Lcy}': b'L',
    b'{Lstrok}': b'\xa1',
    b'{L}': b'L',
    b'{Mcy}': b'M',
    b'{M}': b'M',
    b'{NJEcy}': b'Nj',
    b'{Nacute}': b'\xe2N',
    b'{Ncaron}': b'\xe9N',
    b'{Ncy}': b'N',
    b'{No}': b'No.',
    b'{Ntilde}': b'\xb4N',
    b'{N}': b'N',
    b'{OElig}': b'\xa6',
    b'{Oacute}': b'\xe2O',
    b'{Ocirc}': b'\xe3O',
    b'{Ocy}': b'O',
    b'{Odblac}': b'\xeeO',
    b'{Ograve}': b'\xe1O',
    b'{Ohorn}': b'\xac',
    b'{Ostrok}': b'\xa2',
    b'{Otilde}': b'\xe4O',
    b'{Ouml}': b'\xe8O',
    b'{O}': b'O',
    b'{Pcy}': b'P',
    b'{P}': b'P',
    b'{Q}': b'Q',
    b'{Racute}': b'\xe2R',
    b'{Rcaron}': b'\xe9R',
    b'{Rcy}': b'R',
    b'{R}': b'R',
    b'{SHCHcy}': b'Shch',
    b'{SHcy}': b'Sh',
    b'{SOFTcy}': b'\xa7',
    b'{Sacute}': b'\xe2S',
    b'{Scommab}': b'\xf7S',
    b'{Scy}': b'S',
    b'{S}': b'S',
    b'{THORN}': b'\xa4',
    b'{TSHEcy}': b'\xe2C',
    b'{TScy}': b'\xebT\xecS',
    b'{Tcaron}': b'\xe9T',
    b'{Tcommab}': b'\xf7T',
    b'{Tcy}': b'T',
    b'{T}': b'T',
    b'{Uacute}': b'\xe2U',
    b'{Ubrevecy}': b'\xe6U',
    b'{Ucirc}': b'\xe3U',
    b'{Ucy}': b'U',
    b'{Udblac}': b'\xeeU',
    b'{Ugrave}': b'\xe1U',
    b'{Uhorn}': b'\xad',
    b'{Uring}': b'\xeaU',
    b'{Uuml}': b'\xe8U',
    b'{U}': b'U',
    b'{Vcy}': b'V',
    b'{V}': b'V',
    b'{W}': b'W',
    b'{X}': b'X',
    b'{YAcy}': b'\xebI\xecA',
    b'{YEcy}': b'E',
    b'{YIcy}': b'I',
    b'{YUcy}': b'\xebI\xecU',
    b'{Yacute}': b'\xe2Y',
    b'{Ycy}': b'Y',
    b'{Y}': b'Y',
    b'{ZHcy}': b'Zh',
    b'{ZHuacy}': b'\xebZ\xech',
    b'{Zacute}': b'\xe2Z',
    b'{Zcy}': b'Z',
    b'{Zdot}': b'\xe7Z',
    b'{Z}': b'Z',
    b'{aacute}': b'\xe2a',
    b'{abreve}': b'\xe6a',
    b'{acirc}': b'\xe3a',
    b'{acute}': b'\xe2',
    b'{acy}': b'a',
    b'{aelig}': b'\xb5',
    b'{agrave}': b'\xe1a',
    b'{agr}': b'b',
    b'{alif}': b'\xae',
    b'{amp}': b'&',
    b'{aogon}': b'\xf1a',
    b'{apos}': b"'",
    b'{arab}': b'(3',
    b'{aring}': b'\xeaa',
    b'{ast}': b'*',
    b'{asuper}': b'a',
    b'{atilde}': b'\xe4a',
    b'{auml}': b'\xe8a',
    b'{ayn}': b'\xb0',
    b'{a}': b'a',
    b'{bcy}': b'b',
    b'{bgr}': b'c',
    b'{breveb}': b'\xf9',
    b'{breve}': b'\xe6',
    b'{brvbar}': b'|',
    b'{bsol}': b'\\',
    b'{bull}': b'*',
    b'{b}': b'b',
    b'{cacute}': b'\xe2c',
    b'{candra}': b'\xef',
    b'{caron}': b'\xe9',
    b'{ccaron}': b'\xe9c',
    b'{ccedil}': b'\xf0c',
    b'{cedil}': b'\xf0',
    b'{cent}': b'c',
    b'{chcy}': b'ch',
    b'{circb}': b'\xf4',
    b'{circ}': b'\xe3',
    b'{cjk}': b'$1',
    b'{colon}': b':',
    b'{commaa}': b'\xfe',
    b'{commab}': b'\xf7',
    b'{commat}': b'@',
    b'{comma}': b',',
    b'{copy}': b'\xc3',
    b'{curren}': b'*',
    b'{cyril}': b'(N',
    b'{c}': b'c',
    b'{dagger}': b'|',
    b'{dblac}': b'\xee',
    b'{dbldotb}': b'\xf3',
    b'{dblunder}': b'\xf5',
    b'{dcaron}': b'\xe9d',
    b'{dcy}': b'd',
    b'{deg}': b'\xc0',
    b'{diaer}': b'\xe8',
    b'{divide}': b'/',
    b'{djecy}': b'\xb3',
    b'{dollar}': b'$',
    b'{dotb}': b'\xf2',
    b'{dot}': b'\xe7',
    b'{dstrok}': b'\xb3',
    b'{dzecy}': b'dz',
    b'{dzhecy}': b'd\xe9z',
    b'{d}': b'd',
    b'{eacute}': b'\xe2e',
    b'{ea}': b'\xea',
    b'{ecaron}': b'\xe9e',
    b'{ecirc}': b'\xe3e',
    b'{ecy}': b'\xe7e',
    b'{egrave}': b'\xe1e',
    b'{ehookr}': b'\xf1e',
    b'{eogon}': b'\xf1e',
    b'{equals}': b'=',
    b'{esc}': b'\x1b',
    b'{eth}': b'\xba',
    b'{euml}': b'\xe8e',
    b'{excl}': b'!',
    b'{e}': b'e',
    b'{fcy}': b'f',
    b'{flat}': b'\xa9',
    b'{fnof}': b'f',
    b'{frac12}': b'1/2',
    b'{frac14}': b'1/4',
    b'{frac34}': b'3/4',
    b'{f}': b'f',
    b'{gcy}': b'g',
    b'{gecy}': b'g',
    b'{ggr}': b'g',
    b'{ghcy}': b'g',
    b'{gjecy}': b'\xe2g',
    b'{grave}': b'\xe1',
    b'{greek}': b'g',
    b'{gs}': b'\x1d',
    b'{gt}': b'>',
    b'{g}': b'g',
    b'{hardcy}': b'\xb7',
    b'{hardsign}': b'\xb7',
    b'{hcy}': b'h',
    b'{hebrew}': b'(2',
    b'{hellip}': b'...',
    b'{hooka}': b'\xe0',
    b'{hookl}': b'\xf7',
    b'{hookr}': b'\xf1',
    b'{hyphen}': b'-',
    b'{h}': b'h',
    b'{iacute}': b'\xe2i',
    b'{icaron}': b'\xe9i',
    b'{icirc}': b'\xe3i',
    b'{icy}': b'i',
    b'{iecy}': b'\xebi\xece',
    b'{iexcl}': b'\xc6',
    b'{igrave}': b'\xe1i',
    b'{ijlig}': b'ij',
    b'{inodot}': b'\xb8',
    b'{iocy}': b'\xebi\xeco',
    b'{iquest}': b'\xc5',
    b'{iumlcy}': b'\xe8i',
    b'{iuml}': b'\xe8i',
    b'{iycy}': b'y',
    b'{i}': b'i',
    b'{jcy}': b'\xe6i',
    b'{jecy}': b'j',
    b'{jicy}': b'\xe8i',
    b'{joiner}': b'\x8d',
    b'{j}': b'j',
    b'{kcy}': b'k',
    b'{khcy}': b'kh',
    b'{kjecy}': b'\xe2k',
    b'{k}': b'k',
    b'{lacute}': b'\xe2l',
    b'{laquo}': b'"',
    b'{latin}': b'(B',
    b'{lcub}': b'{',
    b'{lcy}': b'l',
    b'{ldbltil}': b'\xfa',
    b'{ldquo}': b'"',
    b'{ljecy}': b'lj',
    b'{llig}': b'\xeb',
    b'{lpar}': b'(',
    b'{lsqb}': b'[',
    b'{lsquor}': b"'",
    b'{lsquo}': b"'",
    b'{lstrok}': b'\xb1',
    b'{lt}': b'<',
    b'{l}': b'l',
    b'{macr}': b'\xe5',
    b'{mcy}': b'm',
    b'{mdash}': b'--',
    b'{middot}': b'\xa8',
    b'{mlPrime}': b'\xb7',
    b'{mllhring}': b'\xb0',
    b'{mlprime}': b'\xa7',
    b'{mlrhring}': b'\xae',
    b'{m}': b'm',
    b'{nacute}': b'\xe2n',
    b'{ncaron}': b'\xe9n',
    b'{ncy}': b'n',
    b'{ndash}': b'--',
    b'{njecy}': b'nj',
    b'{nonjoin}': b'\x8e',
    b'{ntilde}': b'\xb4n',
    b'{num}': b'#',
    b'{n}': b'n',
    b'{oacute}': b'\xe2o',
    b'{ocirc}': b'\xe3o',
    b'{ocy}': b'o',
    b'{odblac}': b'\xeeo',
    b'{oelig}': b'\xb6',
    b'{ogon}': b'\xf1',
    b'{ograve}': b'\xe1o',
    b'{ohorn}': b'\xbc',
    b'{ordf}': b'a',
    b'{ordm}': b'o',
    b'{ostrok}': b'\xb2',
    b'{osuper}': b'o',
    b'{otilde}': b'\xe4o',
    b'{ouml}': b'\xe8o',
    b'{o}': b'o',
    b'{para}': b'|',
    b'{pcy}': b'p',
    b'{percnt}': b'%',
    b'{period}': b'.',
    b'{phono}': b'\xc2',
    b'{pipe}': b'|',
    b'{plusmn}': b'\xab',
    b'{plus}': b'+',
    b'{pound}': b'\xb9',
    b'{p}': b'p',
    b'{quest}': b'?',
    b'{quot}': b'"',
    b'{q}': b'q',
    b'{racute}': b'\xe2r',
    b'{raquo}': b'"',
    b'{rcaron}': b'\xe9r',
    b'{rcedil}': b'\xf8',
    b'{rcommaa}': b'\xed',
    b'{rcub}': b'}',
    b'{rcy}': b'r',
    b'{rdbltil}': b'\xfb',
    b'{rdquofh}': b'"',
    b'{rdquor}': b'"',
    b'{reg}': b'\xaa',
    b'{ringb}': b'\xf4',
    b'{ring}': b'\xea',
    b'{rlig}': b'\xec',
    b'{rpar}': b')',
    b'{rsqb}': b']',
    b'{rsquor}': b"'",
    b'{rsquo}': b"'",
    b'{rs}': b'\x1e',
    b'{r}': b'r',
    b'{sacute}': b'\xe2s',
    b'{scommab}': b'\xf7s',
    b'{scriptl}': b'\xc1',
    b'{scy}': b's',
    b'{sect}': b'|',
    b'{semi}': b';',
    b'{sharp}': b'\xc4',
    b'{shchcy}': b'shch',
    b'{shcy}': b'sh',
    b'{shy}': b'-',
    b'{softcy}': b'\xa7',
    b'{softsign}': b'\xa7',
    b'{sol}': b'/',
    b'{space}': b' ',
    b'{spcirc}': b'^',
    b'{spgrave}': b'`',
    b'{sptilde}': b'~',
    b'{spundscr}': b'_',
    b'{squf}': b'|',
    b'{sub}': b'b',
    b'{sup1}': b'\x1bp1\x1bs',
    b'{sup2}': b'\x1bp2\x1bs',
    b'{sup3}': b'\x1bp3\x1bs',
    b'{super}': b'p',
    b'{szlig}': b'ss',
    b'{s}': b's',
    b'{tcaron}': b'\xe9t',
    b'{tcommab}': b'\xf7t',
    b'{tcy}': b't',
    b'{thorn}': b'\xb4',
    b'{tilde}': b'\xe4',
    b'{times}': b'x',
    b'{trade}': b'(Tm)',
    b'{tscy}': b'\xebt\xecs',
    b'{tshecy}': b'\xe2c',
    b'{t}': b't',
    b'{uacute}': b'\xe2u',
    b'{ubrevecy}': b'\xe6u',
    b'{ucirc}': b'\xe3u',
    b'{ucy}': b'u',
    b'{udblac}': b'\xeeu',
    b'{ugrave}': b'\xe1u',
    b'{uhorn}': b'\xbd',
    b'{uml}': b'\xe8',
    b'{under}': b'\xf6',
    b'{uring}': b'\xeau',
    b'{us}': b'\x1f',
    b'{uuml}': b'\xe8u',
    b'{u}': b'u',
    b'{vcy}': b'v',
    b'{verbar}': b'|',
    b'{vlineb}': b'\xf2',
    b'{v}': b'v',
    b'{w}': b'w',
    b'{x}': b'x',
    b'{yacute}': b'\xe2y',
    b'{yacy}': b'\xebi\xeca',
    b'{ycy}': b'y',
    b'{yecy}': b'e',
    b'{yen}': b'Y',
    b'{yicy}': b'i',
    b'{yucy}': b'\xebi\xecu',
    b'{y}': b'y',
    b'{zacute}': b'\xe2z',
    b'{zcy}': b'z',
    b'{zdot}': b'\xe7z',
    b'{zhcy}': b'zh',
    b'{zhuacy}': b'\xebz\xech',
    b'{z}': b'z',
}


def load_table(filename):
    mapping = {}
    with open(filename) as file:
        for line in (i.split(',') for i in file if i.startswith('{')):
            key = line[0]
            value = ''
            for d in line[2].strip().split(" "):
                assert len(d) == 4
                assert d[3] == 'd'
                value += chr(int(d[0:3]))
            mapping[key] = value
    return mapping


def read(input):
    """
    :param input bytes: MARC21 binary field data
    :rtype: bytes
    """
    return re_brace.sub(lambda x: mapping.get(x.group(1), x.group(1)), input)
